Video noise reduction is an important component in modern video encoding architecture, and video denoising (or noise removing) can significantly improve video quality and video compression efficiency for video encoding. The algorithms of video denoising can be classified into three categories: spatial, temporal, and spatiotemporal. Spatial denoising algorithms use pixels within the current input frame, and therefore do not require motion estimation. But this category of algorithms has the tendency of blurring details, especially in texture rich areas. Temporal denoising algorithms use the temporal neighbors of the processing pixel. Because of object or background motion, temporal denoising requires motion estimation to align the pixels before filtering. The motion estimation is often more expensive in computation than denoising itself. However, temporal denoising algorithms generally perform much better at preserving details compared to spatial denoising algorithms, and therefore are widely used for real-world applications. Spatiotemporal algorithms use both spatial and temporal neighbors, and therefore may be more expensive compared to the other two methodologies. Denoising before video encoding is effective to enhance video quality and improve coding efficiency. But denoising is a substantially computational intensive process. Multiple pre-coding denoising algorithms are implemented with hardware, such as FPGA or ASIC, for real-time implementation. There is a need for an improved denoising algorithm that is both highly effective and significantly efficient computationally at an acceptable or reduced cost.